Uvod

Cilj ovog dokumenta je pokazati učenicima kako razviti modul za LMS. Prije nego što započnemo s radom upoznati ćemo se s osnovnim pojmovima koji su nam potrebni za razumijevanje ove teme.

LMS je kratica za Learning menagment system, to je sustav prvenstveno namijenjen izradi obrazovnih sadržaja u digitalnom obliku te održavanju nastave na daljinu. Odabirom bilo kojeg LMS sustava, osim objavljivanja materijala, možemo koristiti mnoštvo različitih aktivnosti pomoću kojih svojim materijalima dajemo novu dimenziju. Danas postoji nekoliko izuzetno kvalitetnih LMS sustava: Moodle, WebCT, Clarolineu, Atutor i dr. Svaki od njih ima svoje prednosti i nedostatke, a nakon proučavanja njihovih karakteristika, korisnik će biti u mogućnosti odabrati jedan od njih. Mi ćemo odabrati Moodle.

Moodle je aplikacija za izradu i održavanje online kolegija putem Interneta. Projekt se kontinuirano razvija s namjenom potpore tzv. obrazovnom okruženju društvenog konstrukcionizma. Napravljen je u PHP-u, a podržava više vrsta baza podataka (posebno MySQL i PostgreSQL). Alternativa je komercijalnim softverskim online obrazovnim rješenjima. Distribuira se pod licencom Open Source (besplatno). Oko 40 000 registriranih mrežnih sjedišta u svijetu koriste Moodle-a s preko 15 000 000 korisnika. Preveden je na ukupno 65 jezika, te se koristi u 211 zemalja svijeta. Modularni projekt Moodlea omogućuje lagano kreiranje kolegija te jednostavno dodavanje sadržaja i obrazovnih aktivnosti.

Razvoj modula

Sada, kada smo se upoznali s osnovnim pojmovima, možemo započeti s razvojem modula za LMS.

Za potrebe ovih uputa, koje će Vam pomoći prilikom razvoja Vašeg novog modula za LMS, stvoriti ćemo novi direktorij pod nazivom 'primjer'. Vi ga možete nazvati kako god želite, bitno je jedino da onda u svim direktorijima i datotekama gdje se koristi naziv primjer, zamijenite s onim koji ste Vi odabrali. Mora biti smješten unutar moodle-ovog direktorija mod.

Slika 1. Putanja do direktorija novog modula koji smo nazvali 'primjer'

Navedeni direktorij, kako bi modul pravilno funkcionirao, mora sadržavati sljedeće direktorije i datoteke prema prikazanoj strukturi:

Slika 2. Struktura mape novog modula 'primjer'

Vrlo je važno je da direktorij novog modula sadrži sve datoteke ovdje navedene, te da se one nalaze unutar poddirektorija ovako kako je na slici iznad prikazano. Stoga, nemojte mijenjati putanju do nijedne od ovih datoteka.

Index.php

Prva datoteka s kojom ćemo se detaljnije upoznati je index.php. Unutar nje se nalazi popis svih funkcija koje modul pruža.

Slika 3. Prvi dio datoteke index.php

Kao što vidimo index.php datoteka započinje s require_once. Pomoću njega uključujemo one datoteke koje smo naveli u zagradi. U ovom slučaju to su config.php i lib.php. Ukoliko dođe do neuspjeha prilikom izvođenja, require će zaustaviti scenariji i prikazati upozorenja da se pojavila greška (error warning). Možemo primijetiti kako se uz oznaku require nalazi i nastavak _once, on nam govori da će se provjeriti je li PHP datoteka već uključena, i ako je tako, neće zahtijevati ponovno uključenje.

Zatim, naređujemo da se uzme id kolegija određenog modula.

Korištenjem funkcije $DB->get_record dobiti ćemo evidenciju kolegija na temelju njegovog id-a i na taj način smanjiti broj upita u bazi podataka.

require_course_login($course); nam služi kako bi omogućili aktivnosti kao što je pristup za čitanje sadržaja naslovnice bez prijave.

Svi parametri funkcije ($params=array) su nizovi vrijednosti koje koristimo prilikom ispunjavanja rezerviranih mjesta za SQL izraze.

Slika 4. Dodavanje evenata, karakteristika stranice i izlaza

Događaji (event) su atomski dijelovi informacije koji opisuju nešto što se dogodilo u Moodle-u. Oni su prije svega rezultat aktivnosti korisnika, ali također mogu biti rezultat procesa ili radnji koje se poduzimaju putem naredbenog retka.

Dodajemo prikaz stranice na Moodle log.

Postavljamo da svi izbrisani događaj i moraju biti dodani u evidenciju izbrisanih zapisa, te da se događaji pokreću stvaranjem nove instance klase događaja i izvršavanja.

Korištenjem get_string vraćamo lokalizirani niz za postojećeg korisnika.

Zatim je potrebno postaviti poveznicu na stranicu, navigaciju, naslov stranice, naslov kolegija te raspored stranice. Postavljen je raspored stranice incourse koji se koristi se za područja unutar kolegija, tipičnih za module.

Izlaz započinje kada skripta poziva:

echo $OUTPUT->header();
echo $OUTPUT->heading($strname);

Slika 5. Prikaz funkcija unutar indeks.php datoteke

Zatim slijede funkcije koje su potrebne za rad modula.

Slika 6. Funkcija koja vraća objekt klase course_modinfo

Funkcija get_fast_modinfo vraća objekt klase course_modinfo koja sama po sebi sadrži cm_info predmeta o svakoj aktivnosti.

Slika 7. Posljednji dio index.php datoteke

Prikazujemo zatamljenja ukoliko je mod skriven.

Vidimo kako Moodle ima klase pod nazivom html_writer, one omogućuju izlaz osnovnih HTML tagova.

Lib.php

Slijedeća datoteka s kojom ćemo se upoznati je lib.php. U njoj se nalaze sve funkcije potrebne za rad bilo kojeg modula.

Slika 8. Početak lib.php datoteke

U prvome dijelu datoteke imamo funkciju koja vraća informacije o tome podržava li modul značajku.

Slika 9. Primjer funkcije koja sprema svaki novi primjerak modula

Zatim upisujemo novu funkciju koja sprema svaki novi primjerak modula primjer u bazu podataka. Dani objekt/predmet koji sadrži sve potrebne podatke (definirane u formi mod:form.php) će ovoj funkciji stvoriti novi primjerak i vratiti id broj nove verzije.

Slika 10. Funkcija unutar lib.php datoteke

Ažurira primjerak primjera u bazi podataka. Dani objekt koji sadrži sve potrebne podatke (definirane u formi mod_form.php), će u ovoj funkciji ažurirati postojeći primjerak s novim podacima.

Slika 11. Primjer funkcije koja briše primjerak modula iz baze

Briše primjerak primjera iz baze podataka. Dani ID primjera ovog modula će funkciji trajno obrisati primjer i sve podatke koji ovise o njemu.

Slika 12. Primjer funkcije za korisničko izvješće o aktivnostima

Vraća mali objekt sa sažetim informacijama o tome što je korisnik učinio s pojedinim primjerkom ovog modula. Koristi se za korisničko izvješće o aktivnostima.

$return->time = vrijeme kada su ga napravili

$return->info = krati tekstualni opis

Slika 13. Primjer funkcije koja detaljno ispisuje korisničko izvješće o aktivnostima

Ispisuje detaljno što je korisnik napravio s pojedinim primjerkom ovog modula za korisničko izvješće o aktivnostima.

Slika 14. Primjer funkcije koja pronalazi nedavnu aktivnost i ispisuje ju

S obzirom na tijek i vrijeme, ovaj modul bi trebao pronaći nedavnu aktivnost koja se događala u primjeru i ispisati ju.

function primjer_get_recorded_mod_activity(&$activities,
&$index,$timestart,$courseid,$cmid,$userid=0,$groupid=0,) {

Slika 15. Funkcija koja priprema nedavnu aktivnost podataka

Priprema nedavnu aktivnost podataka, ovaj povratni poziv funkcije bi trebao popuniti prijeđeni niz sa prilagođenim zapisima aktivnosti.

Zapisi su vraćeni u HTML preko {@link primjer_print_recent_mod_activity()}.

Slika 16. Primjer funkcije koja ispisuje pojedine stavke aktivnosti

Ispisuje pojedine stavke aktivnosti pripremljene od strane {@link primjer_get_recent_mod_activity()}.

Slika 17. Primjer funkcije koja pretražuje radnje koje trebaju biti obavljene

Funkcija pokrenuta periodično prema moodle cron, pretražuje radnje koje trebaju biti obavljene, kao sto su slanje maila, stavljanje zastavica itd.

Slika 18. Primjer funkcije koja vraća sve dodatne mogućosti korištene u modulu

Vraća sve dodatne mogućnosti korištene u modulu, npr. ovo bi mogao biti niz ('moodle/site:accessallgroups') da modul koristi tu sposobnost.

Slika 19. Primjer funkcije koja provjerava je li ljestvica korištena bilo gdje

Provjerava je li ljestvica korištena od bilo kojeg primjerka modula primjer. Ovo se koristi kako bi saznali je li se ljestvica koristila.

Slika 20. Primjer funkcije koja stvara ili ažurira razinu predmeta

Stvara ili ažurira razinu predmeta za dani primjerak modula primjer.

Slika 21. Primjer funkcije koja briše stavke ocjenjivanja

Brisanje stavke ocjenjivanja za dani modul primjer.

Slika 22. Primjer funkcije koja ažurira razrede modula u Gradebook

Ažurira razrede modula primjer u Gradebook. Potrebno od strane {@link grade_update_mod_grades()}.

Slika 23. Primjer funkcije koja vraća popis svih datoteka

Vraća popis svih datoteka koje je moguće pretražiti unutar područja modula.

function primjer_get_file_info($browser,$areas,$course,$cm,$context,
$filearea,$itemid,)$filepath,$filename,) {

return array () ;
}

Slika 24. Primjer funkcije koja je podrška za pretraživanje datoteka

Podrška za pretraživanje datoteka unutar primjer modula.

Slika 25. Primjer funkcije koja služi datoteke iz modula

Služi datoteke iz primjer modula.

function primjer_extended_navigation (navigation_node
$navref, stdClass $course, stdClass $module, cm_inf $cm) {

// TODO Delete this function and its docblock, or implement it.

}

Slika 26. Primjer funkcije koja proširuje navigacijsko stablo

Proširuje globalno navigacijsko stablo dodavanjem čvorova, ako postoji relevantan sadržaj. Moguće da je pozvan putem AJAX zahtjeva.

function primjer_extend_settings_navigation
(settings_navigation $settingsnav, navigation_node $primjernode = null) {
TODO Delete this function and its docblock, or implement it. }

Slika 27. Primjer funkcije koja proširuje postavke navigacije

Proširuje postavke navigacije.

Locallib.php

<?php

defined('MOODLE_INTERNAL') || die ();

Slika 28. Prikaz locallib.php datoteke

Locallib.php datoteka za sada sadrži samo početku oznaku za php dokument i jednu liniju koda. Prilikom razvoja svog modula kod dodajete sami po želji, a u pravilu ova datoteka sadrži sve specifične funkcije koje su potrebne za provedbu modula.

Mod_form.php

<?php
defined('MOODLE_INTERNAL') || die ();

require_once($CFG->dirroot.'/course/moodleform_mod.php');
class mod_primjer_mod_form extends moodleform_mod {

Slika 29. Početni kod mod_form.php

Na slici iznad prikazan je početni kod datoteke mod_form.php koji nam je već poznat iz prijašnjih datoteka.

Slika 30. Definiranje formi, grupiranje postavki, dodavanje imena polja

Definiranje forme elemenata, grupiranje svih uobičajenih postavki, te dodavanje standardnog imena polja.

Slika 31. Dodavanje standardnih uvodnih polja

Dodavanje standardnih intro i introformat polja.

Slika 32. Dodavanje ostalih postavki modula

Dodavanje ostalih postavki modula primjer i također njihovo grupiranje, ili dodavanje novih grupacija ukoliko je potrebno za bolju logiku.

Version.php

Slika 33. Prikaz koda datoteke Version.php

Sadrži informacije o verziji vašeg modula što je važno za instalaciju i upgrade modula

View.php

Generiranje pojedinih primjeraka modula primjer.

Slika 34. Početni kod View.php datoteke

ID kolegija modula bi trebao biti imenovan kao prvi znak modula.

Slika 35. Prikaz koda funkcije i eventa

Slika 36. Prikaz zaglavlja stranice

Prikaz zaglavlja stranice.

Slika 37. Kraj dokumenta view.php

Ovdje započinje OUTPUT (izlaz), uvjete za prikaz uvoda možete promijeniti ili postaviti vlastite. Zadnja linija koda predstavlja kraj stranice.

Grade.php

Grade.php datoteka služi za preusmjeravanje korisnika na odgovarajuće povezane stranice prilikom podnošenja ocjena.

Slika 38. Prikaz koda datoteke grade.php

Sljedeće datoteke koje ćemo opisati su dio DB direktorija.

Access.php

<?php defined('MOODLE_INTERNAL') || die();

Slika 39. Početni kod datoteke access.php

Unutar Access.php datoteke se dodaju sve mogućnosti za korištenje našeg novog modula, mogu biti učitane tijekom instalacije ili nadogradnje.

Slika 40. Prikaz dodanih sposobnosti modula

Izmjenite sposobnosti po potrebi.

Install.php

Pruža kod koji se treba izvršiti tijekom instalacije.

<?php

function xmldb_primjer_install() {
}

function xmldb_primjer_install_recovery() {
}

Slika 41. Prikaz koda install.php datoteke

Install.xml

Služi za uređivanje strukture tablica modula.

Slika 42. Prikaz koda datoteke install.xml

Uninstall.php

Pruža kod koji će se izvršiti tijekom deinstalacije modula.

<?php function xmldb_primjer_uninstall() {

return true;

}

Slika 43. Prikaz koda datoteke uninstall.php

Upgrade.php

Ova datoteka prati sve nadogradnje za modul.

Slika 44. Kod za izlučivanje nadogradnji za modul

Izlučivanje nadogradnji za modul primjer iz starih verzija.

Slika 45. Započinjanje nadogradnje

Ovdje započinje nadogradnja

Slika 46. Definiranje područja kolegija

Definiranje područja kolegija koji će biti dodan modulu.

Slika 47. Definiranje uvoda i uvodnog formata u kolegij

Definiranje uvoda (intro) u kolegij, te definiranje uvodnog formata za modul. I kraj.

Sljedeće datoteke koje ćemo opisati su dio backup dijela modula. Kao što je prikazano na slici strukture datoteka, nalaze se unutar direktorija backup u poddirektoriju moodle2.

Backup_primjer_activity_task.class.php

Pruža korake za izvedbu jednog kompletnog backup-a od primjerka modula. Zatim se definira backup korak za pohranu podataka primjerka podataka u primjer.xml datoteci. Nakon toga se kodiraju URL-ovi u index.php i view.php skripte. I za kraj pružaju se poveznice za listu modula, te poveznica na modul primjer koji je vidljiv prema id-u.

Slika 48. Prikaz koda datoteke backup_primjer_activity_task.class.php

Backup_primjer_stepslib.php

Definira potpunu strukturu za backup zajedno s id datotekama i bilješkama.

Slika 49. Prikaz koda datoteke backup_primjer_stepslib.php

Restore_primjer_activity_task.class.php

Slika 50. Prikaz koda datoteke restore_primjer_activity_task.class.php

Pruža vraćanje aktivnosti zadatka.

Slika 51. Prikaz koda datoteke restore_primjer_activity_task.class.php

Vraća zadatak za modul primjer, pruža sve postavke i korake da bi u potpunosti povratili aktivnosti. Definiraju se određene postavke i koraci koje modul može imati, te sadržaj koji te aktivnosti moraju sadržavati.

Restore_primjer_stepslib.php

Definira sve korake koje služe za povrat aktivnosti a koristiti će se od strane restore_primjer_activity_task.

Slika 52. Prikaz koda restore_primjer_stepslib.php datoteke

Unutar poddirektorija event, direktorija classes, nalaze se dvije PHP datoteke čiju ćemo svrhu u nastavku detaljnije objasniti.

Course_module_viewed.php

Slika 53. Prikaz koda datoteke course_module_viewed.php

Mod_primjer primjerak prikaza klase događaja.

Course_module_instance_list_viewed.php

Služi za definiranje prikaza događaja.

Slika 54. Prikaz koda datoteke course_module_instance_list_viewed.php

Primjer.php

Datoteka primjer.php nalazi se unutar direktorija lang u poddirektoriju en.

Slika 55. Prikaz koda primjer.php datoteke

Posljednja datoteka s kojom ćemo se upoznati je installed.feature. Treba biti dostupna unutar direktorija tests u poddirektoriju behat.

Installed.feature

Slika 56. Prikaz sadržaja datoteke installed.feature

Unutar pix direktorija nalaze se slike ikona moodle-a u .gif i .png formatu.

Slika 57. Sadržaj pix direktorija

Ove datoteke možete pisati sami, ili preuzeti .zip sa moodle-ovih web stranica. Sada kada smo se upoznali sa sadržajem svih datoteka koje je potrebno imati na svom računalu za razvoj novog modula, možemo prijeći da njegovu instalaciju. U svojem pretraživaču posjetite poveznicu localhost/moodle, zatim se ulogirajte se u svoj moodle račun koji ste izradili prilikom instalacije moodle-a. Ukoliko se pojavi greška provjerite jeste li pravilno pokrenuli xampp.

Slika 58. Prijava na moodle

Nakon što smo se ulogirali u moodle, moguće je da će sam prepoznati novu nadogradnju modula i pokrenuti instalaciju, ukoliko to ne učini klikom na Administracija poslužitelja, a zatim na obavijesti, otvoriti ćemo instalaciju modula primjer.

Slika 59. Nadogradnja novog modula pod nazivom primjer

Slika 60. Završena nadogradnja novog modula.

Nakon što kliknemo na nastavi, pojaviti će se stranica postavke naslovnice za naš modul. Postoje brojne postavke, tako da svako može prilagoditi novi modul svojim potrebama.

Slika 61. Postavljanje postavki naslovnice

Nakon što smo postavili sve što smo željeli, potrebno je pohraniti promjene.

Slika 62. Pohranjivanje promjena

I gotova je nadogradnja. Ovako sada izgleda naš modul.

Slika 63. Novi modul

Kako bi smo modificirali tablice modula kliknemo na administracija poslužitelja-> razvoj-> XMLDB uređivač.

Slika 64. Putanja do uređivanja modulovih tablica

Ovdje odabiremo koje tablice želimo stvoriti, učitati, urediti, pohraniti itd.

Slika 65. Uređivanje tablica

Klikom na dodaci-> aktivnosti -> uredi aktivnosti, možemo vidjeti popis instaliranih modula.

Slika 66. Putanja do popisa modula

Na slijedećoj slici vidimo kako je naš modul primjer uspješno dodan na popis instaliranih modula.

Slika 67. Popis instaliranih modula

Klikom na naslovnicu dobiti ćemo prikaz kako izgleda naslovnica našeg modula.

Slika 68. Prikaz modula primjer

Ovo je samo početak razvoja modula za LMS, modul možete prilagoditi prema svojim željama. Kako bi se detaljnije upoznali s korištenjem i mogućnostima koje pruža, posjetite službene stranice moodle-a.